#ifndef VAINSHTEIN_H
#define VAINSHTEIN_H

#include "cubaturs.h"
#include <QProgressBar>
#include <QTextBrowser>
#include <QFile>
#include <QTextIStream>

class Vainshtein : public Cubaturs {   //for propagating waves
public:
    Vainshtein();
    Vainshtein(Integrals *);
    int numCoef[3]; // number of coefs
    double Kappa;
    double Gamma,GammaT;
    double Shield;// shield

    void coeffs(QProgressBar *);

//private:
    __complex__ double compSqrt(__complex__ double);

    double zerosCoaxE(int,int);
    double zerosCoaxH(int,int);
    __complex__ double hankel(int,double);
    __complex__ double hankelS(int,double);

//    __complex__ double gnMultiply(int);
    __complex__ double gnMultiply(__complex__ double);
//    __complex__ double gnMultiplyT(int);
    __complex__ double gnMultiplyT(__complex__ double);

    __complex__ double eSw(int);
    __complex__ double eSwT(int);
    double Omega(double);
    double OmegaT(double);
    double ArgOm(double);
    double ArgOmT(double);
    __complex__ double eeDelta(double ww);

    __complex__ double getRln(double);
    __complex__ double getTln(double);
    __complex__ double getRlnT(double);
    __complex__ double getTlnT(double);

    gsl_complex eps,Refract;
    void ortodox(QTextBrowser *);
    void analitic(QTextBrowser *);
    void stepByStep(QTextBrowser *);
    void analiticE(QTextBrowser *);
    void withoutInt(QTextBrowser *);
    void withoutInt2(QTextBrowser *);
    void diffraction(QTextBrowser *);
    void diff_new(QTextBrowser *);
    void wenger(QTextBrowser *);
    //void wenger2(QTextBrowser *);
    void diff_check(QTextBrowser *);
    double amq(double,double);
    double bnq(double,double);
    double b0q(double);

};

#endif // VAINSHTEIN_H
